約 2,735,618 件
https://w.atwiki.jp/kimikage/pages/119.html
ファイル選択ダイアログを表示します。 using Microsoft.Win32; using System.IO; using System.Linq; using System.Windows; namespace WpfApp { /// summary /// MainWindow.xaml の相互作用ロジック /// /summary public partial class MainWindow Window { /// summary /// コンストラクタ /// /summary public MainWindow() { // コンポーネントの初期化 InitializeComponent(); } /// summary /// Click File Open Button /// /summary /// param name="sender" /param /// param name="e" /param private void BtnOpenFile_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); // タイトル openFileDialog.Title = "ファイルを開く"; // 拡張子でフィルタリング"ダイアログに表示する文字|フィルタリング条件①;条件②;..." openFileDialog.Filter = "*.bmp,*.jpg|*.bmp;*.jpg"; // ダイアログを表示 openFileDialog.ShowDialog(); // ファイルが選択されていた場合 if (openFileDialog.FileNames.Length 0) { LblFileName.Content = openFileDialog.FileNames[0]; } } /// summary /// Click Multi Files Open Button /// /summary /// param name="sender" /param /// param name="e" /param private void BtnOpenFiles_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); // タイトル openFileDialog.Title = "複数のファイルを開く"; // 拡張子でフィルタリング"ダイアログに表示する文字|フィルタリング条件①;条件②;..." openFileDialog.Filter = "*.bmp,*.jpg|*.bmp;*.jpg"; // 複数ファイル選択 openFileDialog.Multiselect = true; // ダイアログを表示 openFileDialog.ShowDialog(); // ファイルが選択されていた場合 if (openFileDialog.FileNames.Length 0) { LblFilesName.Content = string.Join(" ", (from fileName in openFileDialog.FileNames select "\"" + new FileInfo(fileName).Name + "\"").ToList()); } } } } サンプルソース
https://w.atwiki.jp/chaosgvg/pages/82.html
GV時 通常 ギルド名 ギルマス 職性別Lv EMC 結成日 溜まり場 scarlet eyes 'Liqueur' 男:ソウルリンカー:90 EMC無 不明 不明 読みは「スカーレットアイズ」直訳は「緋色の瞳」 同属ギルドとして「Laevatein」「Violently Squall」「After the яain」「Caladbolg」「Mistletainn」がある GVG戦記やギルドHP等関連リンク(過去所属メンバー含む) HP名 URL 管理者 HighWind(動画) http //zoome.jp/cid777/ CID HighWind(ブログ) http //cidhighwind.seesaa.net/ CID Nothingness http //lva.blog28.fc2.com/ 不明 履歴 10/09/05:「AML」同盟から「Laevatein」が脱退し「AS月下」同盟に分離 09/05/19 09/04/04 3737827 'Liqueur' scarlet eyes 普段マッタリお気軽にどうぞ 90 リンカー ♂ 09/03/29 3737827 'Liqueur scarlet eyes 生体系? 98 拳聖 ♂ 09/03/16 3875021 A Song for x x* scarlet eyes Gv少々シテタリマッタリ○ 27 アコ ♀ 09/03/15 3751724 Runia† scarlet eyes 生体系? 96 ハイプリ ♂ 09/02/17 457085 niya_k scarlet eyes いのちだいじに。 99 ハイプリ ♀ 08/11/03 3552754 aiko* scarlet eyes 慟哭 64 プリ ♀ 08/10/17 243625 堕天使 scarlet eyes 99 ハイウィズ ♂ 08/10/09 1949601 Yellow strawberry scarlet eyes 生体系 99 拳聖 ♀ 08/10/06 3806480 ドス=サントス scarlet eyes 77 アサ ♂ 08/09/15 1427228 さやか. scarlet eyes [ほいほいちゃーはん] 73 チャンプ ♀ 08/09/15 1108703 Gloria scarlet eyes 94 ハイプリ ♀
https://w.atwiki.jp/mysqlmemo/pages/21.html
BindingSourceとDataSet Form.Validateもしくは、BindingSource.EndEdit()が実行された時点で、BindingSourceとDataSetの内容が同期されるのか? DB構造の変更 原則 型付DataSetにある列やTableを、DB上で削除してはならない(DB上の列やTableを削除するときは、その前に必ず型付DataSet上からそれを削除する)。追加は可能。 列名の変更 まず、型付DataSetの対応する列をいったん削除する。その後、DB上で列名を変更する。その後、型付DataSet上に再びその列を加える。
https://w.atwiki.jp/kakugame/pages/2054.html
日付 言語 称号 1 日 【パイルドライバー】 【ニュージーランド人】 外 【Piledriver】 【Kiwi】 2 日 【イタリア製】 【靴は有名ブランド】 外 【Italian Made】 【Check these Kicks】 3 日 【ダブルベッド主義】 【甘酸っぱい思い出】 外 【Prefers a double-sized bed】 【Bittersweet Memory】 4 日 【音楽室の怪談】 【オークション出品中】 外 【Music Room Ghost Story】 【Auction Item】 5 日 【誉】 【ジュラシック】 外 【Honor】 【Jurassic】 6 日 【ブラックなバード】 【シスター系】 外 【Black Bird】 【Sisterly】 7 日 【ワイパー全開】 【CMで話題の•••】 外 【Windshield wipers at full speed】 【As seen on TV】 8 日 【ヤンキー】 【ジャイアント】 外 【Hoodlum】 【Giant】 9 日 【地獄におちるわよ】 【緊急車両】 外 【You're going to hell】 【Ambulance】 10 日 【スケートコア】 【自動車点検整備推進】 外 【Skate Core】 【Car Inspector】 11 日 【スーパーメン】 【10円貸して!】 外 【Full Face Shield】 【Lend me a quarter!】 12 日 【地球は俺のもの】 【ヴェネチア観光中】 外 【The world belongs to ME】 【Touring Venetia】 13 日 【俺が法律だ】 【実は弁護士です】 外 【I am the law】 【Actually a lawyer】 14 日 【振られた・・・】 【駄菓子屋】 外 【I got dumped】 【Local Candy Shop】 15 日 【リスウサギシカクマ】 【優先席】 外 【Squirrel Rabbit Deer Bear】 【Priority Seat】 16 日 【画質にこだわる】 【マキシG富豪】 外 【Stickler for Picture Quality】 【Maxi G Millionaire】 17 日 【無人運転中】 【エリカ】 外 【Driving Autonomous】 【Erika】 18 日 【カップ麺マニア】 【謎の肉】 外 【Cup Ramen Maniac】 【Mystery Meat】 19 日 【蒸気船乗り】 【殿下】 外 【Steamboat Rider】 【Your Highness】 20 日 【スカイハイ】 【次とまります】 外 【Sky High】 【Next Stop】 21 日 【フリーエージェント】 【宇宙戦争】 外 【Free Agent】 【Space War】 22 日 【ハワイ生活】 【チャリで来た】 外 【Hawaiian Lifestyle】 【Came by Bike】 23 日 【パーカー好き】 【大地主】 外 【Hoodie Lover】 【Land Mogul】 24 日 【オレンジ】 【茶道やってます】 外 【Orange】 【Holding Tea Ceremonies】 25 日 【死神博士】 【ぐわし】 外 【Doctor of Death】 【Rock On】 26 日 【ワールドプロ】 【旋風】 外 【World Pro】 【Whirlwind】 27 日 【女子です】 【缶コーヒーでいい?】 外 【I'm a girl】 【How about a cup o' Joe?】 28 日 【湾岸の狂犬】 【軍鶏】 外 【Wangan Mad Dog】 【Game Fowl】 29 日 【日本みやげ】 【純真無垢】 外 【Japanese Souvenir】 【Immaculate】 30 日 【電気の武者】 【吊るし上げ】 外 【Electric Warrior】 【Hoisted】 スクラッチ称号索引 5
https://w.atwiki.jp/kojiro/pages/670.html
VIEW.DEFINE
https://w.atwiki.jp/bemanilyrics/pages/354.html
Close my Eyes for Me / D-crew feat.DENNIS GUNN(DJ Yoshitaka SCRATCHING) (the bombs stop walking...) (the bombs stop walking...) Somebody come and close my eyes for me Darken my glasses I don't want to see my people getting rolled under the planet Wake me up when it's over Just check under my boulder And tap me on the shoulder And tell me it's OK But not until the day When the bombs stop walking And the masks stop talking (And the masks stop talking) No no no until the day When the bombs stop walking And the masks stop talking (And the masks stop talking) 6 billion people here. Living in fear of a moron that's a mastermind (that's a mastermind) And justice that is just as blind Drunk on power as the leader of the land of free for all Close my eyes for me I don't want to see Close my eyes for me I don't want to see The world I love get an autopsy I check my watch and the hand of fate is pointing at the final hour (final hour) The calendar date is much too late for salvation of my super power When the earth runs off the rails And the solar system fails And the point of no return impales the littlest fish and greatest whales Close my eyes for me. (Close my eyes for me.) Close my eyes for me. (Close my eyes for me.)
https://w.atwiki.jp/sampleisbest/pages/412.html
開発環境 メモ帳 実行環境 Windows 7 Home Premium (32bit)
https://w.atwiki.jp/orika_makingsupport/pages/60.html
ここではフリーソフトの「Paint.NET」での枠出しオリカの作成方法を紹介していきます あくまで一例ですので参考までにどうぞ Paint.NET公式ページ→Paint.NET Paint.NETは最新版にアップデートしてしまうとオリカに文字を書き入れる際に 文字が以前より若干薄くなってしまうので最新版へのアップデートはしない方がいいかと思います 個人的にはV3.36が一番使いやすい気がするので 新たにインストールする方や最新版にアップデートしてしまった方はV3.36をインストールすることをオススメします ※全ての画像はこのページの一番下に添付ファイルという形で置いてあります 画像の番号と文章の見出しの番号は対応しているので、画像が見づらいという方はそちらからどうぞ 画像内に文章を書き込んでいるのでぜひ見てみてください^^ ① Paint.NETで枠の素材を開き、別のレイヤーでオリカに使用する絵を開きます 絵を開いたらそのレイヤーの不透明度を下げ、適宜絵の位置を移動させましょう 尚、今回使用する画像については加工や転載が許可されているものを使用しています 画像の使用に関しては著作権のページをご覧下さい 今回使用させていただいた画像の掲載元→[神楽丼様 http //www8.plala.or.jp/denpa/indexdon.html]] ② まず、レイヤーを枠の素材の方のレイヤーを選択しましょう そうしたらツールの魔法の杖を選択 この時、許容範囲は20~30%位だといいかもしれません(画像では50%になってますが気にしないで下さい) そうしたら絵が入る部分(白い部分)の中でクリックしましょう そうすることで絵が入る部分だけが選択されると思います 手順に関しては画像内で①や②などの数字を使って表してあるので参考にしてみてください ③ 左上のタブから 編集→範囲の切り替え を行いましょう こうすることで、先ほど選択した部分以外の部分が選択されます ④ レイヤーを一つ追加しましょう そうしたら追加したレイヤーに先ほど切り取ったものを貼り付け 最後に、真ん中のレイヤーの不透明度を元に戻しましょう 一見①の画像と何も変わっていないように見えますが、 真ん中のレイヤーは枠の素材の絵の部分だけ 一番上のレイヤーは枠の素材の絵の部分以外の部分だけ というように、一つの絵が2つのレイヤーに分断された状態になっています ⑤ 一番上のレイヤーを選択します 選択したらこのレイヤーの不透明度を下げ、枠の素材が見えるようにしましょう ⑥ 魔法の杖を使って要らない部分を選択しましょう この時、許容範囲を調節することで選択される範囲を微調整することができます ⑦ 「なんだ、これなら枠出しなんて簡単じゃん」 そう思ってた時期が僕にもありました← 確かに魔法の杖ツールを使用れば、簡単に要らない部分をカットすることが出来ます しかし、それが出来るのはあくまで境界線がはっきりしている絵だけです そういった絵というのは極まれで、ほとんどの絵の場合魔法の杖だけでは満足にカットすることは出来ません 下の画像のようにカットのされ方が荒く、見栄えが悪くなってしまいます ⑧ 細かい部分のカットに関しては、やはり消しゴムを使って地道にカットしていくしかないです 面倒ですがここでオリカの見栄えの良さが大きく変わってくるので気合入れましょう! オススメは、魔法の杖で大雑把にカットしてから削り残った部分を消しゴムで細かく削っていくって形です ⑨ カットをするとこのようになります 後はレイヤーを一つに結合して完成 …といきたい所ですが、さらに見栄えをよくする為に枠出しした部分に影をつけていきましょう 影には立体感を出すだけでなく、カットした部分の荒さをごまかす効果もあります^^ ひとまず上の2つのレイヤーを結合しましょう ⑩ レイヤーを一つ追加し、そのレイヤーを背面に移動させ真ん中に持ってきましょう ⑪ 影をつけたい部分をペイントブラシ等で適当に描き込みましょう 適当で大丈夫です 影をつける部分はその人のセンスでご自由にどうぞ ⑫ 左上のタブから 効果→ぼかし→ガウス とクリックしていきましょう ガウスをクリックするとウィンドウが出てくるので、数値を少しあげて適当に影っぽい感じにぼかしましょう そうするとこんな感じになります ⑬ 若干影が濃いなぁと思ったらレイヤーの不透明度を下げて調節しましょう ⑭ そうするとこんな感じになります これで加工の方は完成です、レイヤーを一つにしていきましょう レイヤーを結合する際の注意点なのですが、複数のレイヤーを結合する際には 必ず下から二番目のものから順に結合していくようにしましょう 上からとか、バラバラに結合していくと それぞれのレイヤーの不透明度がバラバラの場合、結合した際の画像の不透明度がおかしくなります ⑮ 最後にカード名やテキストを書き込んで完成です 以上で説明を終わります、読んでいただきありがとうございました 全ての画像はこのページの一番下に添付ファイルという形で置いてありますので 画像が見づらい!という方はそちらからどうぞ^^ 文章の見出し番号と画像の番号は対応しています 分からないことや質問がありましたら、トップページ下のコメントフォームや初心者用質問掲示板にてお知らせください。
https://w.atwiki.jp/lookworld/pages/75.html
0. このドキュメントについて この資料では、Visual Basic 6.0から.NETで作成したクラスをCOMとして利用する為の方法について説明する。.NET側の言語はC#を用いるが、他の言語にも応用可能である。 同様の情報が「.NET COM 相互運用」のようなキーワードでネットやヘルプ等の様々な場所に点在しているが、VBから.NETを利用するという観点で通して説明した資料が見つからなかった為、自分なりの解釈でそれらをまとめたものである。 解釈が間違えている箇所もあると思われるので、お気づきの点は shinde@sev.or.jp までご連絡頂ければ幸いである。内容については各自の責任で利用されたい。 目次 1. 最も簡単にVB6から.NETコンポーネントを利用する方法 2. VB6上で実行できるようにする 3. DLLの共有方法 3.1 会社固有のキー・ペアを作成する 3.2 DLLに遅延署名する 3.3 グローバルアセンブリキャッシュ(GAC)に登録する 3.4 VB6から利用できるようにする 3.5 署名を行う 4. その他の問題を解決する 4.1 最新のタイプライブラリを使ってコンパイルすると、実行時エラー429が発生する 4.2 VB6のコード補完が使えない 4.3 イベントをVB6から利用できない 5. 参考文献 1. 最も簡単にVB6から.NETコンポーネントを利用する方法 (1) .NETのDLLを作成する。 まず、VB6から利用したい.NETのクラスをコンパイルし、DLLにする。 DLLにするにはプロジェクトの新規作成時に「クラス ライブラリ」を選択すれば良い。例) DotNetCOMTest.dll DotNetCOMTestClass void TestA() - メッセージボックスを表示する。 このDLLはVB6.exeと同じディレクトリに置いておく。 (2) COMとして利用できるように、レジストリに登録する。 VB6から利用する為に、.NETのDLLをCOMとして利用できるようにレジストリに登録する。 これをやってくれるのがregasmコマンドである。 % regasm DotNetCOMTest.dll ※regasm.exeは、.NET Framework ランタイムに含まれる("WINNT\Microsoft.NET\Framework"以下の各バージョンのフォルダに存在する)。 (3) tlbexp コマンドで、タイプライブラリ(*.tlb)を作成する。 VB6の統合開発環境から利用する為にはタイプライブラリというクラスの型情報を持つファイルが必要である。 これを生成するのがtlbexpコマンドである。% tlbexp DotNetCOMTest.dll /out DotNetCOMTest.tlb ※tlbexp.exeは、.NET Framework SDKに含まれる(\Program Files\Microsoft.Net\ FrameworkSDK\Bin か、VS.NETインストールフォルダ内の同場所に含まれる)。 この結果、同じディレクトリにDotNetCOMTest.tlb が作成される。 (4) VB6のプロジェクトから参照設定する。 VB6の「参照設定」からDotNetCOMTest.tlb を読み込む。 これでVBの統合開発環境上で各クラスを呼び出す準備が整った事になる。 (5) VB6から.Netクラスを生成し、呼び出す。 VB6のフォームにボタンを貼り付け、ボタンのClickイベントに次のようなコード を書く。 尚、クラス名以外のコード補完機能は働かない為注意が必要だ(コード補完機能を使えるようにするには4.を参照)。 VBソースコード(Form1) Private Sub Command1_Click() On Error GoTo Err_Proc Dim obj As DotNetCOMTest.DotNetCOMTestClass (a) Set obj = New DotNetCOMTest.DotNetCOMTestClass (b) Call obj.TestA (c) Exit Sub Err_Proc MsgBox Err.Description End Sub (a) DotNetCOMTestパッケージの、DotNetCOMTestClassの変数objを宣言する。 (b) DotNetCOMTestClassを生成し、objに代入する。 (c) objのTestAメソッドを呼び出す。 (6) プロジェクトをコンパイルし、exeを作成する。 exeを実行してボタンをクリックするとTestAが呼び出される事を確認する。 尚、VB6上から直接実行すると、クラスが見つからない旨のエラーになる。 VB6上から実行できるようにするには2.または3.を行う必要がある。 2. VB6上で実行できるようにする VB6上から直接実行するとエラーになるのは、VB6から実行する際にはカレントフォルダがVB6.exeのフォルダになっており、DLLをVB6が見つけられない為である。 対策は、DLL(ここではDotNetCOMTest.dll)をvb6.exeと同じフォルダにコピーするだけでよい。 ※DotNetCOMTest.dllが参照している他のDLLがあればそれもコピーする。 このやり方でも特に問題はないが、このDLLが他のアプリケーションからも使われる「共有DLL」である場合は3.の対処を行う必要がある。3.の対処を行う場合は2.の対処は不要である。 コラム:共有DLLは必要か? 「3.DLLの共有方法」で説明しているDLLの共有方法は、昔ながらのCOMの共有方法に近い。 しかし、本来.NETの思想ではDLLはそれぞれのアプリケーションにローカルにすべきであり、共有を避けることによって「DLL地獄」に陥らないようにしたり、「XCOPYインストール」を実現したりするのが本筋であろう。 「3.DLLの共有方法」で確かに共有は実現されるが、代償としてそのアプリケーションのインストール時にGACにアクセスしなければならなくなる。GACにアクセスするためのツールであるgacutil.exeは.NET SDKをインストールしなければ存在しない為、VBアプリケーションの配布が非常に面倒になる。 では一般に.NET DLLを利用するVBアプリケーションを配布するにはどうすればいいのかというと、このドキュメントの1.と2.で説明した通り、配布したいVB用アプリケーションのexeと同じフォルダに.NET DLLを配置してregasm.exeを実行すればいいだけである。regasm.exeは.NETランタイムをインストールすれば一緒にインストールされる。 複数のアプリケーションから共有したい場合は、それぞれのアプリケーションフォルダにDLLをコピーすれば良い。一箇所にDLLをまとめたいのであれば、そのVBアプリケーション用の「アプリケーション構成ファイル」を作成してcodebase属性でDLLの位置を指定すれば良い。 「3.DLLの共有方法」は、最後の手段と考えておくべきである。 ※参考:<codebase>属性 http //www.microsoft.com/japan/msdn/library/default.asp? url=/japan/msdn/library/ja/cpgenref/html/gngrfcodebase.asp ※アプリケーション構成ファイルについて ちなみに、アプリケーション構成ファイルは「exe名.config」という名前で作成すればOKだが、これは.NETアセンブリを利用するVBアプリケーションにもそのまま当てはまる。 つまり、「MyVBApp.exe」というVBアプリなら、「MyVBApp.exe.config」という名前で作成すれば良い。codebase属性などについては上記URLを参照のこと。 ※DLLの配布の際は、4.1の問題点についても対処しておくこと。 3. DLLの共有方法 COMの場合、system32フォルダに置いてregsvr32を実行することでDLLを共有できた。 .NETにも共有の仕組みが用意されている。 DLLを共有化すると、どのアプリケーションからでもそのDLLを利用することができる。但し、どうしても共有しなければならない理由がない限り、DLLは各アプリケーションにローカルにしておいた方が良い。 共有化するためにはグローバルアセンブリキャッシュ(GAC)にDLLを登録すれば良い。 しかし、GACに登録する為にはDLLに対して先に「署名」を行うことにより厳密名をつける必要がある。 署名を行う為には「キー・ペア」と呼ばれるものが必要になる。 ここでは開発時のキー・ペアの運用を考慮して、遅延署名と呼ばれるテクニックを用いた手順を詳しく解説する。 この方法はDLLに対して厳密名を付ける方法としても参考にして良い。 尚、既にDLLが完成していて後は共有するだけ、という場合は以下の項目だけを実行すれば良い。 3.1(1) キー・ペアを作成する。 3.2(2) 公開キーを使って遅延署名する。 (※3.1(1)のキー・ペアを使って正式署名をすれば良い) 3.3(2) GACに登録する。 3.4(1) system32フォルダにDLLをコピーする。 3.1 会社固有のキー・ペアを作成する。 (1) キー・ペアを作成する。 % sn.exe -k companyname.snk ※sn.exeは、.NET Framework SDKに含まれる(\Program Files\Microsoft.Net\ FrameworkSDK\Bin に含まれる)。 この結果、カレントフォルダにcompanyname.snkが作成される。 このキー・ペアは他に漏れないよう厳重に保管する必要がある。 また、このキー・ペアは会社固有のキー・ペアとして全てのDLLに対しての署名用に用いる。 3.2 DLLに遅延署名する。 キー・ペアは非常に機密性の高いファイルである為、DLLをコンパイルする度にこのファイルを持ち出していたのでは機密性を保持するのは大変である。 これを回避する為に「遅延署名」というテクニックが用意されている。これはキー・ペアから「公開キー」のみを取り出し、これを使って擬似的に署名を行うものである。 ちゃんとした署名は開発の終了時に行う。 (1) キー・ペアから公開キーを取り出す。 % sn.exe -p companyname.snk companyname_public.snk この結果、companyname_public.snkが作成される。このキーは公開用のキーなので誰に配っても良い。 この後、この公開キーを使ってDLLに「遅延署名」を行う。 コラム: 「キー・ペア」とは何か? 「キー・ペア」とは暗号化方式の一つである「公開鍵暗号化方式」の用語である。 よく知られる「秘密鍵暗号化方式」では一つの暗号化キーを使って暗号化と復号を行うが、公開鍵暗号化方式では「個人鍵」と「公開鍵」という二つの暗号化キーのペアを用いる。 これがキー・ペアと呼ばれる由縁である。 個人鍵を使って暗号化された文書は、対となる公開鍵でしか復号できない。また、公開鍵を使って暗号化された文書は対となる個人鍵でなければ復号できない。 例えばA氏が自分の個人鍵を使って暗号化した文書は、A氏が公開している公開鍵を使ってしか復号できない為、その文書がA氏のものだという証拠となる(もちろん個人鍵は厳重に管理されているという前提がある)。 逆にA氏に秘密の文書を送りたい場合は、送信者がA氏の公開鍵を使って暗号化し、A氏に送れば良い。A氏は自分の個人鍵を使って復号することができるが、他の人がもしこの文書を入手しても復号することはできないのである。 これを署名検証に応用する場合、目的は「対象のアセンブリが正式に署名されたものかを確認する」ことである。その為には、アセンブリ自身に、アセンブリのハッシュをアセンブリの個人鍵で暗号化したものと公開鍵を持たせておけば良い。検証する側は、自分が持っている公開鍵を使ってその暗号文を復号し、それがアセンブリのハッシュと一致すれば、身元が正しい事を証明できる。もちろんこれは、検証する側がそのアセンブリの正しい公開鍵を事前に知っている場合に限られる。(実際にはもっと複雑な手順を踏んでいると思われる)。 (2) 公開キーを使って遅延署名を行う。 公開キー(companyname_public.snk)をプロジェクト(又はソリューション)フォルダに配置する。 VS.NETのプロジェクト(又はソリューション)を開き、AsemblyInfo.cs に以下の記述を追加する。 AssembyInfo.cs(一部) [assembly AssemblyDelaySign(true)] // falseにすると正式に署名される。 [assembly AssemblyKeyFile(@"..\..\..\companyname_public.snk")] これでコンパイルすれば、DLLに遅延署名がされる。 尚、AssemblyKeyFile属性はDLLの出力先からの相対パスとなるので、各環境に合わせて変更しなければならない。 また、署名された(厳密名を持った)DLLは厳密名を持ったDLLしか参照できない為、必要ならばそれらも署名する必要がある。 3.3 グローバルアセンブリキャッシュ(GAC)に登録する。 (1) 署名検証機能をオフにする。 遅延署名されたDLLは公開キーを持っているだけで、実際には有効な署名がされているわけではない。よって、DLLのロード時の署名検証時にエラーとなって しまう。 以下の方法で.NET Frameworkの署名検証機能をオフにする必要がある。この処理は.NET Frameworkに対して行われるものであり、DLLそのものに何らかの変更がされる訳ではない。よって、オフにしたい全ての環境でこれを実行しなければならない。% sn.exe -Vr DotNetCOMTest.dll ところで、「こんなことができるのなら、遅延署名など使わず最初から署名検証機能をオフにすればよかったのに」と思う人がいるかもしれないが、なんらかの形で署名されていないとGACへの登録そのものができない為、面倒だがしょうがない。 (2) グローバルアセンブリキャッシュ(GAC)に登録する。 % gacutil -i DotNetCOMTest.dll ※gacutil.exeは、.NET Framework SDKに含まれる(\Program Files\Microsoft.Net\ FrameworkSDK\Bin に含まれる)。 尚、登録解除は以下の通り。 % gacutil -u DotNetCOMTest DLLから参照している他のDLLがあるならば、全てGACに登録しなければならない。 3.4 VB6から使用できるようにする。 (1) system32フォルダにDLLをコピーする。 DLLを、system32フォルダ(又はパスが通っているフォルダ)にコピーする。 その後、1.と同様の処理を行えばよい。 3.5 署名を行う。 遅延署名されたDLLは出荷前にちゃんとしたキー・ペアを使って署名しなければならない。 (1) 遅延署名DLLへ署名する。 % sn.exe -Rc DotNetCOMTest.dll companyname.snk (2) 署名検証機能をオンにする。 開発環境においては必ずしも行う必要はないが、正式に署名されたDLLの署名検証 機能をオンに戻すのは以下の方法で行う。% sn.exe -Vu DotNetCOMTest.dll 4. その他の問題を解決する 4.1 最新のタイプライブラリを使って再コンパイルすると、実行時エラー429が発生する。 DLL側の開発中は、頻繁にDLLそのものやタイプライブラリが更新されることになる。 ところが更新されたタイプライブラリをVBに読み込んで再コンパイルしたexeを実行すると、実行時エラー429が発生する場合がある。 regasmを使ってDLLを再登録するとこのエラーは起こらなくなる。しかし、DLLが更新されるたびにregasmを行っていたのでは非常に面倒であるし、配布もしづらい。 これは以下のような理由から起こる。 タイプライブラリを生成すると、クラスの固有キーがCLSIDとして生成され、タイプライブラリに埋め込まれる。既定ではこのCLSIDは毎回違うものになる為、タイプライブラリに埋め込まれるCLSIDも毎回異なることになる。 regasmによってレジストリに登録される.NETクラスのキーはこのCLSIDであり、exeはこのCLSIDを用いて.NETクラスを探しに行く。最新のタイプライブラリ(つまり新しいCLSID)を使ってコンパイルされたexeがいくらレジストリを探しても、まだregasmされていない.NETクラスは見つけられないのである。 これを回避する為にはクラスやインターフェイスに対してGUID属性を指定すれば良い。 [GuidAttribute("25731EF3-88ED-4322-9A90-E665598A4889") ] public class Person IPerson { ※GUIDは、[ツール]メニューから「GUIDの生成」を使って生成できる。 これによりCLSIDは固定となり、いちいちregasmを行う必要はなくなる。 4.2 VB6のコード補完が使えない。 そのままの設定だと.NETのクラスに対してはVB6のコード補完が働かない。これについては以下のように対処可能であるが、いくつか問題もある。 (1) ClassInterface属性にClassInterfaceType.AudoDualを設定する。 [ClassInterfaceAttribute(ClassInterfaceType.AutoDual)] public class Person この属性値を指定すると、そのクラスのメンバが全てVB6のコード補完から使えるようになる。 具体的にはAutoDualは全てのメンバのインターフェイスをタイプライブラリに記述する、つまり事前バインディングを可能にする指定である。 しかしこれには重大な欠点がある。そのクラスのメンバのレイアウト(メンバの順番など)を変更すると、事前バインディングのインターフェイスも変わってしまうのだ。例えばクラスのメンバAとBの間にメンバXを加えたら、それまで動いていたアプリケーションが全て動かなくなってしまう。メンバAとBの順番を変えただけでも同様の結果になる。毎回全てのアプリケーションを再コンパイルするのは、開発時は問題ないとしても、一旦リリースしてしまった場合などは困難である。 開発時のみの属性値だと思った方が良さそうである。(MSも、この属性値は「推奨しない」と言っている) (2) ClassInterface属性にClassInterfaceType.AutoDispachを設定する。 [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] public class Person この属性値を指定してもコード補完は働かない。それもそのはず、この属性値は既定値だからである。何も指定しなければ自動的にAutoDispatchとなる。 具体的にはAutoDispatchは全てのメンバのインターフェイスをタイプライブラリに「記述しない」、つまり事前バインディングをできないようにする指定である。逆に言えば、遅延バインディング(実行時バインディング)に限定することになる。 こうする事には理由がある。(1)の説明を読めばお分かりと思うが、事前バインディングを用いるとクラスのレイアウト変更に非常に弱くなってしまうからである。事前バインディングでなく遅延バインディングを用いることで、クラスのレイアウト変更とは完全に切り離すことができる。 (3) ClassInterface属性にClassInterfaceType.Noneを設定する。 [ClassInterfaceAttribute(ClassInterfaceType.None)] public class Person IPerson コード補完は使いたい、でもAutoDualは問題がある・・・このちょうど中間がNoneである。 Noneは、そのクラスが実装しているインターフェイス(ここではIPerson)のみを事前バインディング可能にする指定である。これだけならAutoDualと同じ問題が起きそうだが、Noneの良いところはクラス側のレイアウト変更が外部に影響を及ぼさない点である。IPersonのレイアウトのみが外部に影響する。 よって、Noneを用いるのは「COM公開用のインターフェイスが決まっており、今後も変更しない事が決まっている場合」 に限られる。これはCOMの思想と合致しており、あくまでもCOMとして利用するためのDLLであればこれで問題ないと思われる。 4.3 イベントをVB6から利用できない。 .NETのクラスでイベントを発生させ、VBのクライアントからそれを受け取る・・・いかにも楽しそうなこのテクニックが、単に.NETのクラスにeventを定義しただけでは行えない。 VB側でWithEventsステートメントを使っても、そもそもコード補完のリストに該当のクラスが現れないのである。 イベントの利用はなぜか面倒な手続きが必要となっている。 まず、そのイベントと同じ引数と名前のメソッドを持つインターフェイス(ここではPersonEvents)を定義し、以下のような属性を指定する。 public delegate void PersonEventHandler( string name );[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] public interface PersonEvents { void NameChanged( string name ); } public class Person { public event PersonEventHandler NameChanged; 次に、ComSourceInterfaces属性を使ってクラス側にそのインターフェイス名を指定する。 public delegate void PersonEventHandler( string name ); [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)] public interface PersonEvents { void NameChanged( string name ); }[ComSourceInterfaces("DotNetCOMTest.PersonEvents, DotNetCOMTest")] public class Person { public event PersonEventHandler NameChanged; ComSourceIntarfaces属性値の引数は、最初がイベント用に定義したインターフェイス名、二番目がそのインターフェイスが存在するアセンブリ名である。 これでVB6からイベントを利用できるようになる。 5. 参考文献 Microsoft .NET Framework SDK クイックスタートチュートリアルhttp //ja.gotdotnet.com/quickstart/default.aspx 解説 インサイド .NET Framework (@IT記事)http //www.atmarkit.co.jp/fdotnet/technology/index/index.html 高度なCOM相互運用機能 - クラス インターフェイスの概要 http //www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/ cpguide/html/cpconintroducingclassinterface.asp 高度なCOM相互運用機能 - COMシンクによって処理されるイベントの発生 http //www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/ cpguide/html/cpconraisingeventshandledbycomsink.asp 著者: 株式会社アイジュピタ 新出 純壱( shinde@sev.or.jp )
https://w.atwiki.jp/xbox360gta4/pages/290.html
企業一覧 リバティーシティに存在する企業一覧。 看板だけの存在やネット上だけの存在も含める。 車・バイクのメーカーはカーブランド・実物比較、 もしくは車まとめwikiを参照。 飲食業 小売業 航空・観光業 運輸・宅配業 服飾業 化学工業 製造業 塗装・修理工業 石油・ガス事業 通信・出版業 不動産業 ホテル業 娯楽・風俗業 サービス業 金融業 飲食業 AL DENTE S ALAZONE S ITALIAN FOOD BEAN MACHINE COFFEE BIG BAD AL S BIG & JUICY BURGERS BURGER SHOT CHELLY POPPER CHIHUAHUA HOTDOGS CLUCKIN BELL COMRADE S BAR Creek St. Diner DINER BAR COCKTAILS DRUSILLA S DONNIE S FANNY CRAB S BAR & GRILL FIREFLY ISLAND BBQ FLY HIGH PIZZA PIE FRANKFURTER GOZUSHI Gelateria Pasta Liquor Pizza GREEN DRAGON HOMEBREW CAFE IRON BELLY DELI JERKOV S JOHNSON S LUCKY WINKLE S MR FUK S RICE BOX NONNA PINA S O.O.T. PIZZA THIS RUSTY BROWN S RING DONUTS SQUID ROW STEINWAY BEER GARDEN SUM YUNG GAI SUPERB DELI SUPER STAR CAFE S WISH PIZZA THE BAY BAR THE HAITIAN KITCHEN THE NUT HOUSE VINEWOOD BAR & GRILL VIENDEMORTE WIGWAM BURGER 60DINER 69th STREET DINER 小売業 AUTO EROTICAR BACKSIDE SKATEBOARDS BIG PAULIE BUDGET CARS BIG WILLIS MALL BINCO BOB S LIQUORS BRAWLS BRUCIE S EXECUTIVE LIFESTYLE AUTOS CHECKOUT CURBCRAWLER SKATEBOARDS DESRATAR WINE STORE FABULOUS FOOTWEAR J J CHINA LIMITED LEOPOLDS PILL PHARM PIER 45 LEFTWOOD SPORTS LIBERTY CAMERAS ROCK STAR MUSIC & VIDEO SATRIALE S PORK STORE SAVE-A-CENT SUB URBAN SCOTTS PET STORE SPENDER S THE EASY LAY CARPET STORE WESTDYKE AUTOS 24-7 航空・観光業 ADIOS AIRLINES AIRSOL ESCAPISM FLY US HIGHMEN GROUP SPACETOURS 運輸・宅配業 ALPHA MAIL LIBERTY CITY TRANSPORT AUTHORITY LIBERTY STATE DELIVERY POST OP ROMAN BELLIC ENTERPRISES RS HAUL TRUCK YOU 服飾業 AIONGOLD ALPHABETZ ANNA REX BULL CADET CREVIS CROWEX de Koch DERRIERE DIDIER SACHS DOUBLE P Dr.B ENEMA ERIS FACE FOURCHETTE FRUNTALOT GAULLE GAUNT G & B GNOCCHI HAWAIIAN SNOW HEAT HINTERLAND KRONOS LE CHIEN Miss T MODO PERSEUS PRO LAPS RADGE RANCH REARWALL RIMMERS RUSSIAN SHOP (НОВИНКИ ПОСЛЕДНЕИ МОДЫ) SHODI SIZERO SKEEZA SNEAKY TANKTOP TREE VCtm WHITE WIDOW YOGARISHIMA 16 20 化学工業 BETTA EUGENICS HORN MAX RENDA PHARAOH VENEER 製造業 A.M. BEER BIGLOG S BENEDICT LIGHT BEER BLARNEY S STOUT BLÉUTER D BOURGEOIX COGNAC CANDYBOX CARDIAQUE CIGARETTES CERVEZA BARRACHO CHERENKOV CoK DUSCHE GOLD eCola ELECTROLYTE FACADE FRUIT GENIC G&Y BAGELS HOMIES SHARP INBREAD BAKERY JAKEY S LAGER JO JO S KAKAGAWA KRAPEA LOGGER BEER NOODLE EXCHANGE NOGO VODKA ORANG-O-TANG PANORAMIC PATRIOT BEER PIßWASSER RAINE REDWOOD CIGARETTES SCHMIDT & PRISS SPRUNK STRONZO THE MOUNT DISTILLING COMPANY THRIFT EX Üder Milken UNITED LIBERTY PAPER WIFEBEATER 69 CIGARS 塗装・修理工業 AUTO COWBOYS AUTO LIMBO AXEL S GAZ N BAZ TOTAL SPANNERS LIBERTY ELECTRICAL COMPANY NATIVE ENGINES AUTO PARTS S&M AUTO SALES 石油・ガス事業 GLOBE OIL PHARTE GAS RON TERROIL XERO GAS 通信・出版業 BADGER CCC CNT eyefind.info LC24 LIBERTY CITY POST LIBERTY SPORTS NETWORK LIBERTY TREE Love-Meet.net MeTV MORNING HORN PIRATE MUSIC THE DAILY GLOBE TINKLE TRACKIFY tw@ WEAZEL WHIZ ZIT! 不動産業 FEINBERG & VAN WYCK REALTY FMA PARK SYSTEMS MANCO REAL ESTATE QUALITY HOMES REALTY WOLFS INTERNATIONAL REALTY ホテル業 BANNER HOTEL & SPA GRAND NORTHUMBRIAN HOTEL ÜBERBRÜCKER HOTEL GOERING OPIUM NIGHTS HOTEL PYTHAGORAS APARTMENTS THE CELTICA HOTEL THE EMISSARY HOTEL THE HOTEL ON LUDDITE EAST THE LIBERTINE HOTEL THE MAJESTIC HOTEL THE NICOISE HOTEL THE STAR PLAZA HOTEL 娯楽・風俗業 AMDRAM THEATER BAHAMA MAMAS CANYON ENTERTAINMENT CLUB LIBERTY GOLDEN PIER HERCULES HONKERS LIBERTEEN KIDS THEATER LINEN LOUNGE LIVE CENTRAL MUSIC VENUE MAGIC CURTAIN THEATER MAGINOT THEATER MEMORY LANES MAISONETTE 9 PERESTROIKA PILLOWS SPLIT SIDES COMEDY CLUB THE TRIANGLE CLUB THE SEAGULL THEATER VIDEOGEDDON ARCADE サービス業 CAR WASH AND PURE LUBE GAS STATION CARWASH GLOBE OIL CARWASH GOLDBERG LIGNER & SHYSTER GRUPPE 6 HANK S RENT-A-CAR HIGGINS HELITOURS HIGHMEN GROUP HIGHSPEED HIGHWAY CAR WASH LAUNDROMAT LIBERTY SANITATION DEPARTMENT MR WONGS LAUNDERETTE PUMP GYMNASIUMS THE JOUSTERS VIG INSURANCE WILLIS CAR WASH & LUBE ZAJECKI GYM A STAND 金融業 BANK OF LIBERTY FLEECA INTERNATIONAL ONLINE UNLIMITED LOM BANK SCHLONGBERG SACHS SHARK WHAN-Q BANK